const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin')
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')
const path = require('path')

// vue.config.js文件


// webpack插件根据环境判断来使用改为这个方式（在加参数或者不加参数的情况都能正确运行）
// if ((process.env.NODE_ENV === 'production' && isNeedUpload)) {
//   webpackConfig.configureWebpack.plugins.push(
//     new UploadFileWebPackPlugin({
//       // 服务器的配置信息
//       serverConfig: uploadServerConfig,
//       // 本地打包输出的文件夹路径
//       buildFolder: 'dist/',
//       // 上传到服务器上的路径
//       servePath: '/home/sendi/fe/winne-test/',
//   }),
//   );
// }

module.exports = {
  // 配置webapck
  configureWebpack: {
    resolve: {
      // 配置路径解析时的别名
      alias: { // @指向src的绝对路径
        views: '@/views/',
        components: '@/components/',
        assets: '@/assets'
      }
    },
    externals: '/static',
    plugins: [
      // new SkeletonWebpackPlugin({
      //   webpackConfig: {
      //     entry: {
      //       app: path.join(__dirname, './src/components/entry-skeleton.js'),
      //     },
      //   },
      //   minimize: true,
      //   quiet: true,
      // }),
      // new MonacoWebpackPlugin(),
      // 在npm run build的时候才执行这个插件（自动化部署插件）
      // ---- 尝试过这个方法使用插件，但是在不加参数的时候就会报错说webpack插件定义不正确的情况
      // (process.env.NODE_ENV === 'production' && isNeedUpload)
      //   && new UploadFileWebPackPlugin({
      //       // 服务器的配置信息
      //       serverConfig: uploadServerConfig,
      //       // 本地打包输出的文件夹路径
      //       buildFolder: 'dist/',
      //       // 上传到服务器上的路径
      //       servePath: 'c:\\demo',
      //   }),
    ]
  },
  chainWebpack: (config) => {
    // config.plugin('monaco').use(new MonacoWebpackPlugin())
    config.module
      .rule('worker')
      .test(/_worker\.js$/)
      .use('worker-loader')
      .loader('worker-loader')
      .tap(options => ({ worker: 'SharedWorker' }))
      .end()
  }
}